﻿using System.Collections.Generic;
using System.Linq;
using System.Text;
using App.Modelo.Interfaces;
using App.SolInf.Modelo;

namespace App.SolInf.Controlador
{

    public class ControladoraProductos : IControladora
    {
        public ISessionActual Session { get; set; }

        public IRepositorio Repositorio { get; set; }

        public void Alta(Producto producto)
        {
            Repositorio.SaveObject(producto);
            Repositorio.FlushSession();
        }

        public void Modificar(Producto producto)
        {
            Repositorio.UpdateObject(producto);
            Repositorio.FlushSession();
        }

        public void Baja(Producto producto)
        {
            if (producto.Stock > 0)
                throw new ProductoConStockException { Producto = producto };

            Repositorio.DeleteObject(producto);
            Repositorio.FlushSession();
        }

        public IList<Marca> ListarMarcas()
        {
            return Repositorio.GetAll<Marca>();
        }

        public IList<CategoriaProducto> ListarCategorias()
        {
            return Repositorio.GetAll<CategoriaProducto>();
        }
    }
}